home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Utilities
/
Communications
/
InterSLIP Remote 1.2.2
/
Developers
/
InterSLIP.p
next >
Wrap
Text File
|
1995-10-22
|
2KB
|
130 lines
UNIT InterSLIP;
INTERFACE
{$IFC UNDEFINED THINK_PASCAL}
USES
Types;
{$ENDC}
CONST
linkIdle = 0;
linkWaitingForModem = 1;
linkDialing = 2;
linkLoggingIn = 3;
linkConnected = 4;
linkHangingUp = 5;
TYPE
InterSlipReportRec = RECORD
linkState: LongInt;
msgSeqNo: LongInt;
msgStr: Ptr;
END;
FUNCTION InterSlipOpenDriver (VAR drvrRefNum: Integer): OSErr;
FUNCTION InterSlipConnect (drvrRefNum: Integer): OSErr;
FUNCTION InterSlipDisconnect (drvrRefNum: Integer): OSErr;
FUNCTION InterSlipReport (drvrRefNum: Integer; VAR report: InterSlipReportRec): OSErr;
FUNCTION CToPStr (c: Ptr): Str255;
IMPLEMENTATION
{$IFC UNDEFINED THINK_PASCAL}
USES
Files, Devices;
{$ENDC}
{$IFC NOT UNDEFINED THINK_PASCAL}
FUNCTION PBControlImmed (pb: ParmBlkPtr): OSErr;
INLINE
$205F, $A204, $3E80;
{$ENDC}
FUNCTION InterSlipOpenDriver;
BEGIN
InterSlipOpenDriver := OpenDriver('.InterSLIP', drvrRefNum);
END;
FUNCTION InterSlipConnect;
VAR
pb: ParamBlockRec;
count: Integer;
BEGIN
pb.ioRefNum := drvrRefNum;
pb.csCode := 2;
FOR count := 0 TO 10 DO
pb.csParam[count] := 0;
InterSlipConnect := PBControlImmed(@pb);
END;
FUNCTION InterSlipDisconnect;
VAR
pb: ParamBlockRec;
count: Integer;
BEGIN
pb.ioRefNum := drvrRefNum;
pb.csCode := 3;
FOR count := 0 TO 10 DO
pb.csParam[count] := 0;
InterSlipDisconnect := PBControlImmed(@pb);
END;
FUNCTION InterSlipReport;
TYPE
LArray = ARRAY[0..4] OF LongInt;
LArrayPtr = ^LArray;
VAR
pb: ParamBlockRec;
count: Integer;
err: OSErr;
BEGIN
pb.ioRefNum := drvrRefNum;
pb.csCode := 4;
FOR count := 0 TO 10 DO
pb.csParam[count] := 0;
err := PBControlImmed(@pb);
IF err = noErr THEN
BEGIN
report.linkState := LArrayPtr(@pb.csParam)^[0];
report.msgSeqNo := LArrayPtr(@pb.csParam)^[1];
report.msgStr := Ptr(LArrayPtr(@pb.csParam)^[2]);
END;
InterSlipReport := err;
END;
FUNCTION CToPStr;
TYPE
BArray = PACKED ARRAY[0..254] OF Char;
BArrayPtr = ^BArray;
VAR
str: Str255;
i: Integer;
BEGIN
i := 0;
WHILE (BArrayPtr(c)^[i] <> Char(0)) AND (i < 254) DO
BEGIN
str[i + 1] := BArrayPtr(c)^[i];
i := i + 1;
END;
str[0] := Char(i);
CToPStr := str;
END;
END.